home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
C64
/
T-TPUG Old Monthly Disks
/
(c)tn.d64
/
cribbage.c
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2007-02-04
|
7KB
|
256 lines
10 PRINT"[147]"
20 REM BY DAN A. SIEBEN
30 PRINTSPC(8)" CRIBBAGE":PRINTSPC(9)"INSTRUCTIONS? Y[146]ES/N[146]O
40 [151]53280,3:[151]53281,3
50 X[178][187]([171]TI)
60 [141]2290
70 [134]A%(52),V(5),S(5),G(1),T%(6),U%(6),C(3,5),C$(15)
80 [150][165]S(X)[178][181]((X[171]1)[173]13)[170]1:[150][165]V(X)[178]X[171]13[172]([165]S(X)[171]1):C$[178]""
90 FL[178][181]([187](1)[172]2):V1$[178]"A23456789TJQK":S1$[178]"(null)(null)(null)ATN"
100 L$[178]" GET A POINT FOR LAST CARD."
110 [141]780:[137]1660
120 M[178][171]1:N[178]4:C[178]5:[129]A[178]5[164]1[169][171]1:[129]B[178]A[164]1[169][171]1
130 X[178]X%(C):Y[178]U%(C):X%(C)[178]X%(B):U%(C)[178]U%(B):X%(B)[178]X:U%(B)[178]Y
140 [129]I[178]1[164]4:V(I)[178]X%(I):S(I)[178]U%(I):[130]:[141]390
150 [139]P[177]M[167]M[178]P:[129]I[178]1[164]6:W%(I)[178]X%(I):T%(I)[178]U%(I):[130]
160 [130]B:C[178]11[171]C:[130]A
170 [151]198,0:[153][200](C$,21)"WAITWHAT ARE YOUR DISCARDS (1-6) ?"
180 [153][200](C$,19);" ";
190 G(0)[178]0:[129]I[178]0[164]1
200 [161]A$:[139]A$[178]""[167]200
210 [139]A$[178]" "[176]A$[178]"0"[167]180
220 X[178][197](A$):[139]X[179]1[176]X[177]6[176]X[178]G(0)[167]200
230 G(I)[178][197](A$):[153][200](C$,19)[163][171]2[170]6[172]X)"^":[130]
240 [161]A$:[139]A$[178]""[167]240
250 [139]A$[178]" "[167]180
260 [137]1720
270 [129]I[178]1[164]3:C(I,5)[178]A%(13):[130]
280 [129]I[178]1[164]4:C(1,I)[178]13[172](T%(I)[171]1)[170]W%(I):[130]
290 J[178]0:[129]I[178]1[164]6:[139]I[178]G(0)[176]I[178]G(1)[167]310
300 J[178]J[170]1:C(2,J)[178]A%(I[170]6)
310 [130]
320 [129]I[178]1[164]2:C(3,I)[178]A%(6[170]G(I[171]1)):C(3,I[170]2)[178]13[172](T%(I[170]4)[171]1)[170]W%(I[170]4):[130]
330 [129]A[178]1[164]3:[129]B[178]1[164]5:V(B)[178][165]V(C(A,B)):S(B)[178][165]S(C(A,B)):[130]:N[178]5:[141]390
340 C(A,0)[178]P:[130]:[129]I[178]1[164]4:W%(I)[178][165]V(C(1,I)):X%(I)[178][165]V(C(2,I)):[130]
350 [153]"";:[129]K[178]1[164]4:V[178][165]V(C(2,K)):S[178][165]S(C(2,K)):[141]1760
360 [153]"ONONONONONONONWAIT";:[130]
370 [141]800:[141]2120:[141]2190
380 [153][200](C$,12)[166]12)"YOU:"P2" ME:"P1:[141]2200:FL[178]1[171]FL:[137]110
390 P[178]0:[139]S(1)[178]S(2)[175]S(2)[178]S(3)[175]S(3)[178]S(4)[167]P[178]4:[139]N[178]5[175]S(1)[178]S(5)[167]P[178]5
400 [139]P[178]4[175]A[178]3[167]P[178]0
410 [139]N[178]4[167]450
420 [129]I[178]1[164]4:[139]V(I)[178]11[175]S(I)[178]S(5)[167]P[178]P[170]1
430 [130]:S(5)[178]0
440 [153]"
450 FORI=1TON-1:V=20:FORJ=ITON:IFV(J)<VTHENV=V(J):U=J
460 NEXT:V(U)=V(I):V(I)=V:NEXT
470 G(0)=0:G(1)=0:U=0:V=1:W=0:X=0:Y=0:Z=0:FORI=1TON-1
480 IFV(I)=V(I+1)THENG(U)=G(U)+1:X=I:GOTO550
490 IFI>1THENU=1
500 IFV(I+1)-V(I)<>1THEN530
510 IFW=0THENV=V+1:Z=I+1:IFV=2THENY=I
520 GOTO550
530 IFV>2THENW=1:GOTO550
540 V=1
550 NEXT
560 U=G(0)^2+G(1)^2+G(0)+G(1)
570 W=1:FORI=YTOZ:IFV(X)=V(I)THENW=U
580 NEXT
590 IFU=0THENW=1
600 IFU=6THENW=3
610 IFV<3THENV=0
620 P=V*W+U+P
630 Z=0:Y=0
640 FORI=1TON:IFV(I)>10THENV(I)=10
650 NEXT
660 FORI=1TON:Y=Y+V(I):NEXT:IFY=15THENP=P+2:RETURN
670 FORI=1TO3:FORJ=I+1TO4:IFN=4THEN690
680 FORZ=J+1TO5
690 IFV(I)+V(J)+V(Z)=15THENP=P+2
700 IFN=4THEN740
710 IFY-V(I)-V(J)-V(Z)=15THENP=P+2
720 IFN=4THEN740
730 NEXTZ
740 NEXTJ,I
750 FORI=1TON:IFY-V(I)=15THENP=P+2
760 NEXT
770 RETURN
780 FORA=1TO52:A%(A)=A:NEXT
790 FORA=1TO52:B=INT(RND(1)*52+1):C=A%(A):A%(A)=A%(B):A%(B)=C:NEXT:RETURN
800 FORI=1TO4
810 W%(I+4)=W%(I):IFW%(I)>10THENW%(I+4)=10
820 X%(I+4)=X%(I):IFX%(I)>10THENX%(I+4)=10
830 NEXT
840 N1=0:N2=0:C=0:SM=0
850 IFFL=0THEN1050
860 IFN2<>4THEN890
870 IFN1=4THEN1300
880 GOTO1050
890 GOSUB2230:POKE158,0:B$="YOUR PLAY?":GOSUB1900
900 GETA$:IFA$=""THEN900
910 B$="":GOSUB1900
920 A=VAL(A$):IFA$="0"THEN2520
930 IFA<1ORA>4THEN890
940 IFX%(A)=0THENB$="CARD ALREADY PLAYED!":GOSUB1900:GOSUB2200:GOTO890
950 IFSM+X%(A+4)>31THENB$="TOTAL IS MORE THAN 31!":GOSUB1900:GOSUB2200:GOTO890
960 SM=SM+X%(A+4):N2=N2+1:C=C+1:A%(C)=X%(A)
970 GOSUB1450
980 REM IFA=4THEN2208
990 REM PRINT"";TAB(A*3-2)"[144][192][192][157][157] [157][157] [157][157] [157][157] [157][157] [157][157] ":GOTO2210
1000 PRINT"";TAB(A*7-6)"[192][192][192][192][192][157][157][157][157][157] [157][157][157][157][157] [157][157][157][157][157] [157][157][157][157][157]";
1010 PRINT" [157][157][157][157][157] [157][157][157][157][157] [157][157][157][157][157] [157][157][157][157][157][192][192][192][192][192][157][157][157][157][157]";
1020 V=FNV(C(2,A)):S=FNS(C(2,A)):Y=1:P2=P2+P:X%(A)=0:GOSUB2220:GOSUB1640
1030 IFSM<>31THEN1050
1040 GOSUB2240:Y=0:C=0:SM=0:Z=0
1050 IFN1<>4THEN1120
1060 IFN2=4THEN1300
1070 IFA$<>"0"THEN860
1080 ONY+1GOTO890,1090,1110
1090 B$="YOU"+L$:P2=P2+1:GOSUB1640
1100 GOSUB1900:GOSUB2240:Y=0:C=0:SM=0:GOTO860
1110 B$="I"+L$:P1=P1+1:GOSUB1620:GOTO1100
1120 M=-1:N=0:U=C:V=SM:C=C+1
1130 FORL=1TO4:IFW%(L)=0THEN1170
1140 IFSM+W%(L+4)>31THEN1170
1150 N=N+1:SM=SM+W%(L+4):A%(C)=W%(L):GOSUB1450:SM=V
1160 IFP>MTHENM=P:X=L
1170 NEXT
1180 C=U:IFN<>0THEN1360
1190 IFA$<>"0"THEN1230
1200 IFZ=1THEN1250
1210 B$="I"+L$:C=0:SM=0:P1=P1+1:GOSUB1900:GOSUB2240
1220 GOSUB1620:GOTO860
1230 IFN2<>4THEN1280
1240 IFY=2THEN1210
1250 B$="YOU"+L$:P2=P2+1:GOSUB1640:C=0:SM=0:Z=0
1260 A$="":GOSUB1900:GOSUB2240
1270 GOTO1050
1280 IFZ=1THEN860
1290 B$="GO...":GOSUB1900:GOSUB2200:Z=1:GOTO860
1300 IFY=0THEN1350
1310 IFY=1THEN1340
1320 B$="I"+L$:P1=P1+1:GOSUB1900:GOSUB2200
1330 GOSUB1620:GOTO1350
1340 B$="YOU"+L$:P2=P2+1:GOSUB1900:GOSUB1640:GOSUB2200
1350 RETURN
1360 C=C+1:N1=N1+1:IFC<>1ORW%(4)=0THEN1390
1370 IFX>3THEN1390
1380 IFW%(X)=5ORW%(X)=0THENX=X+1:GOTO1370
1390 SM=SM+W%(X+4):A%(C)=W%(X)
1400 V=FNV(C(1,X)):S=FNS(C(1,X)):P=M:Y=2:P1=P1+P:GOSUB2220:W%(X)=0:GOSUB1620
1410 IFSM<>31THEN1430
1420 GOSUB2200:GOSUB2240:Y=0:C=0:SM=0:GOTO860
1430 IFA$="0"ORA$="G"THEN1050
1440 GOTO860
1450 P=0:IFC=1THENRETURN
1460 IFSM=15ORSM=31THENP=P+2
1470 FORI=CTOINT(C/5)*(C-4)+2STEP-1
1480 IFA%(I)<>A%(I-1)THEN1540
1490 ONC-I+1GOTO1500,1510,1520
1500 P=P+2:GOTO1530
1510 P=P+4:GOTO1530
1520 P=P+6
1530 NEXT
1540 IFC=2THENRETURN
1550 W=0:FORI=3TOC:GOSUB1560:NEXT:P=P+W:RETURN
1560 FORJ=1TOC:A%(J+10)=A%(C-J+1):NEXT
1570 FORK=1TOI-1:FORJ=K+1TOI:IFA%(K+10)<A%(J+10)THEN1590
1580 B=A%(K+10):A%(K+10)=A%(J+10):A%(J+10)=B
1590 NEXTJ,K
1600 FORK=1TOI-1:IFA%(K+10)<>A%(K+11)-1THENRETURN
1610 NEXTK:W=I:RETURN
1620 GOSUB2200:IFP1>120THENGOSUB2190:PRINTLEFT$(C$,13)SPC(10)"I WIN!"P1"TO"P2:GOSUB2150
1630 RETURN
1640 GOSUB2200:IFP2>120THENGOSUB2190:PRINTLEFT$(C$,13)SPC(9)"YOU WIN!"P2"TO"P1:GOSUB2150
1650 RETURN
1660 IFFL=0THENGOSUB2190:PRINT"YOUR CRIB..."
1670 IFFL=1THENGOSUB2190:PRINT"MY CRIB..."
1680 POKE59468,12:PRINT"";
1690 FORK=1TO6:V=FNV(A%(K+6)):S=FNS(A%(K+6))
1700 U%(K)=FNS(A%(K)):X%(K)=FNV(A%(K))
1710 GOSUB1760:PRINT"[157][145][145][145][145][145][145][145]";:NEXT:PRINT:PRINT"THINKING":GOTO120
1720 GOSUB2190:V=FNV(A%(13)):S=FNS(A%(13)):PRINTTAB(32)"";:GOSUB1760
1730 PRINTLEFT$(C$,9)
1740 PRINT"YOU ME TOTAL [145]"
1750 GOSUB2250:GOTO270
1760 V$=MID$(V1$,V,1):S$=MID$(S1$,S,1)
1770 IFS$="[211]"ORS$="[218]"THENS$=""+S$
1780 IFS$="[216]"ORS$="[193]"THENS$="[151]"+S$
1790 FORI=1TO15:C$(I)=" ":NEXT
1800 IFV=3ORV>7THENC$(2)=S$:C$(14)=S$
1810 IFV>3THENC$(4)=S$:C$(6)=S$:C$(10)=S$:C$(12)=S$
1820 IFV=2ORV>9THENC$(5)=S$:C$(11)=S$
1830 IFV>5THENC$(7)=S$:C$(9)=S$
1840 IFV=1ORV=3ORV=5ORV=7ORV=9THENC$(8)=S$
1850 PRINT"[176][192][192][192][192][192][174][157][157][157][157][157][157][157]";:FORI=1TO7:PRINT"[221] [221][157][157][157][157][157][157][157]";:NEXT:PRINT"[173][192][192][192][192][192][189]";
1860 PRINT"[157][157][157][157][157][157][145][145][145][145][145][145][145]"V$S$"[157]";
1870 FORI=1TO15STEP3:FORJ=0TO2:PRINTC$(I+J);:NEXT:PRINT"[157][157][157]";:NEXT
1880 PRINT""S$""V$"";
1890 RETURN
1900 PRINTLEFT$(C$,22);:FORI=1TO84:PRINT" ";:NEXT:PRINTLEFT$(C$,22);B$;"":RETURN
1910 PRINT"";:FORK=1TO5:V=FNV(C(X,K)):S=FNS(C(X,K))
1920 GOSUB1760:IFK=4THENPRINT"";
1930 IFK=5THENPRINT:RETURN
1940 PRINT"[145][145][145][145][145][145][145]";:NEXT:RETURN
1950 IFFL=YTHEN1990
1960 PRINT:PRINT"I HAVE"C(X,0)"POINTS":P1=P1+C(X,0):GOSUB1620:GOSUB2550
1970 IFPEEK(203)=64 THEN1970
1980 RETURN
1990 PRINT""
2000 POKE198,0:PRINT"[145][145][145]HOW MANY POINTS";
2010 INPUT"[160][160][160][157][157][157][157][157]";PT$:Q=VAL(PT$)
2020 ZZ=C(Z,0):IFPT$="0[160][160]"THEN2050
2030 IFQ<1ORQ-INT(Q)<>0THENPRINT"[145]":GOTO2000
2040 IFQ>ZZTHENPRINTLEFT$(C$,20);"TOO MANY...TRY AGAIN!":GOTO2000
2050 IFQ<ZZTHENPRINTLEFT$(C$,22);"MUGGINS FOR"ZZ-Q"[157] POINTS!":P1=P1+ZZ-Q:GOSUB1620:GOSUB2070:GOSUB2200
2060 P2=P2+Q:GOSUB2200:GOSUB1640:RETURN
2070 IFPEEK(515)=255THEN2070
2080 RETURN
2090 GOSUB2190:PRINT"[146]":PRINT"";:IFFL=0THENPRINTLEFT$(C$,6);A$
2100 IFFL=1THENPRINTLEFT$(C$,6);B$
2110 GOSUB1910:GOSUB1950:RETURN
2120 A$="I COUNT FIRST":B$="YOU COUNT FIRST":X=FL+1:Y=1:Z=2:GOSUB2090
2130 A$="YOUR HAND":B$="MY HAND":X=2-FL:Y=0:Z=2:GOSUB2090
2140 A$="YOUR CRIB":B$="MY CRIB":X=3:Z=3:GOSUB2090:RETURN
2150 PRINTSPC(12)"ANOTHER GAME?"
2160 GETA$:IFA$=""THEN2160
2170 IFA$="N"THENGOSUB2190:END
2180 CLR:GOTO70
2190 PRINT"[147]";:RETURN
2200 FORI=1TO1000:NEXT:RETURN
2210 FORI=1TO5000:NEXT:RETURN
2220 PRINT:PRINTLEFT$(C$,11+Y)SPC(C*4-4);:GOSUB1760:PRINT"[145][145][145][145]"
2230 PRINT""TAB(3)RIGHT$(C$,10)P2:PRINT""TAB(10)RIGHT$(C$,10)P1:PRINT""TAB(20)RIGHT$(C$,10)SM"[157] ":RETURN
2240 PRINTLEFT$(C$,12);:FORI=1TO10*40:PRINT" ";:NEXT:PRINT"":RETURN
2250 IFFNV(A%(13))<>11THENRETURN
2260 IFFL=0THENA$="YOU":P2=P2+2:GOSUB1640
2270 IFFL=1THENA$="I":P1=P1+2:
2280 B$=A$+" GET 2 POINTS FOR THE JACK":GOSUB1900:RETURN
2290 GETAN$:IFAN$="N"THENRETURN
2300 IFAN$="Y"THEN2320
2310 GOTO2290
2320 PRINT"[147]INSTUCTIONS:"
2330 PRINT"TO SELECT DISCARDS USE KEYS 1 THRU 6 THEN RETURN."
2340 PRINT"TO CHANGE CHOICE OF DISCARDS PRESS THE SPACE BAR BEFORE ";
2350 PRINT"PRESSING RETURN."
2360 PRINT"ONCE YOU HAVE PRESSED THE RETURN KEY, YOU'RE STUCK WITH YOUR CHOICE."
2370 REM FORD=1TO10000:NEXTD
2380 PRINT"TO SELECT A CARD TO PLAY USE KEYS 1 THRU4."
2390 PRINT"***CHOOSE CAREFULLY***[146]"
2400 PRINT"YOU WON'T BE ABLE TO CHANGE YOU'RE CHOICE."
2410 PRINT"IF YOU CAN'T PLAY A CARD TYPE 0."
2420 PRINTSPC(13)"HIT ANY KEY":WAIT198,1
2430 PRINT"[147]THE COMPUTER WILL KEEP SCORE BUT YOU MUST COUNT YOUR OWN CARDS."
2440 PRINT"***COUNT CAREFULLY***[146]"
2450 PRINT"THE COMPUTER WILL TAKE ALL THE POINTS THAT YOU MISS!"
2460 PRINT" INSTRUCTIONS AGAIN? ";
2470 PRINT"Y[146]ES/N[146]O"
2480 GETA$:IFA$<>"Y"ANDA$<>"N"THEN2480
2490 IFA$<>"Y"THENRETURN
2500 GOTO2320
2510 PRINTLEFT$(C$,11)YOU"P2" ME"P1" TTL"SM
2520 [129]P[178]1[164]4:[139]X%(P)[177]0[175]X%(P)[170]SM[179]32[167]B$[178]"YOU HAVE A PLAYABLE CARD!!":[137]10
2530 [130]P:[137]1050
2540 [141]1900:[141]2200:[137]890
2550 [153]" HIT ANY KEY":[146]198,1:[142]